package engine.combat;

/**
 * This is the class that will hold all the data about attacks. This should only hold information
 * that is specific to an attack (so not the attacking creature's strength or the defending
 * creature's armor value.)
 * <p>
 * Change whatever you want (actually just delete all my stuff, they are merely examples of what
 * types of things to put here)
 * <p>
 * TODO: Attack variables (pen, damage type, damage amount) go here
 * 
 * @author Kyle_Solo
 */
public final class Attack {
	/**
	 * A simple way of listing damage types. We can come up with a different later if needed. These
	 * types are examples, replace them with whatever.
	 * 
	 * @author Kyle_Solo
	 */
	public static enum DamageTypes {
		/**
		 * Blunt force. Good at ignoring certain kinds of armor (chainmail, soft armor in general.)
		 * Breaking bones/stun?
		 */
		Crushing,
		/**
		 * Direct damage. Probably very rarely used (like cutscenes or something), ignores all
		 * armor/resistances.
		 */
		Direct,
		/**
		 * ... Your damage type here ...
		 */
		Etc,
		/**
		 * Elemental damage type, may ignore some kinds of armor/chance of burning effect.
		 */
		Fire,
		/**
		 * Stabbing, good at getting through certain kinds of armor. Bleeding/internal damage?
		 */
		Piercing,
		/**
		 * Sharp weapons, good at sundering/causing bleeding?
		 */
		Slashing
	}

	/**
	 * amount of damage being dealt
	 */
	public final int amount;
	/**
	 * The speed of the attack. Affects how difficult it is to dodge.
	 */
	public final int attackSpeed;

	/**
	 * type of damage being dealt
	 */
	public final DamageTypes damageType;

	/**
	 * Yeah, just put your attack info here. This whole class is just an example, change whatever
	 * you want.
	 */
	public final int yourAttackModifyingThingHere;

	/**
	 * Creates an attack, filling it with all the data needed to perform calculations
	 * 
	 * @param damageType
	 *            the type of damage being dealt
	 * @param amount
	 *            the amount of damage being dealt
	 * @param attackSpeed
	 *            the speed of the attack
	 * @param yourAttackModifyingThingHere
	 *            ...
	 */
	public Attack(DamageTypes damageType, int amount, int attackSpeed,
			int yourAttackModifyingThingHere) {
		this.damageType = damageType;
		this.amount = amount;
		this.attackSpeed = attackSpeed;
		this.yourAttackModifyingThingHere = yourAttackModifyingThingHere;
	}
}
